Type Sets Proposal続編
に現在のProposalの内容がまとめられている。
interfaceの標準形
メソッドのインライン化
型セットへの所属判定
interfaceのsubtype判定
Goのnon-interface typeにはsubtype関係がない
問題の分離
メソッドセットの包含関係
union elementの包含関係
union element包含関係の計算規則
code:go
type C interface {
MyInt | ~string
String() string
}
一般形
code:go
type C1 interface {
MyInt | C2
C3
String()
}
// 制約: この時 C2はメソッドを含んではいけない
type C2 interface {
int | string | ~bool
}
// C3はメソッドを含んでいても良い: unionの要素としてではなく、"standalone" で埋め込まれるならばメソッドを含んで良い
type C3 interface {
~int
Int() int
}